const fs = require("fs");
const userInfo = require("../database/userinfo");
const path = require("path");
const verify = require("../modules/verify");

module.exports = async (req,res)=>{
  // 接收前端发送的token
  const { token } = req.body;
  // 接收前端发送的文件信息
  const file = req.files[0];
  // 判断是否缺少必传参数
  if(!(file && token)){
    res.send({
      code:0,
      msg:"缺少必传文件或token",
      data:null
    })
    return;
  }
  // 准备处理异步错误信息
  try{
    // 解析token，验证token
    const tokenData = await verify(token);
    // 准备将已经传到服务器中的文件，改名
    const oldName = path.join( __dirname, "..", file.path);
    const newName = oldName + "-" + file.originalname;
    // 改名
    fs.renameSync(oldName, newName);
    // 拼接出前端需要使用的静态资源地址
    const imgurl = "http://localhost:3000" + newName.split("upload")[1];
    // 将前端能访问到文件信息的地址，存入数据库
    await userInfo.updateOne({userId: tokenData.id}, {
      avatar: imgurl
    })
    // 响应给前端
    res.send({
      code:1,
      msg:"修改成功",
      data: imgurl
    });
  }catch(err){
    // 判断错误信息
    if(err.name === "JsonWebTokenError"){
      res.send({
        code: 3,
        msg: "登录失效或未登录",
        data: null
      })
    }else{
      res.send({
        code: 2,
        msg: "数据库出错",
        data: err.toString()
      })
    }
  }
}